perm filename SEES.OSA[1,ALS] blob sn#001048 filedate 1972-07-24 generic text, type T, neo UTF8
00010	BEGIN "SEE"
00020	DEFINE ⊂="COMMENT";	⊂ 7/11/72;
00030	⊂	This program analyses TABLES.DAT and reports on line;
00050	
00060	REQUIRE "COMSUB.HDR[SYS,ALS]" SOURCE_FILE;
00070	
00080	DEFINE DATSIZ="1280",BUFEXS="43",BUFSIZ="1323";
00100	DEFINE CR="'15",LF="'12",TB="'11",CRLF="CR&LF";
00105	REQUIRE "BLOCKS.HDR[SYS,THO]" SOURCE_FILE;
00160	INTEGER EOF,IEOF,EOFA,BRK;
00180	INTEGER I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,INK;
00190	INTEGER INTOT,SKIP;
00210	INTEGER ARRAY COHG1,COHB1,COHG2,COHB2[0:7];
00220	INTEGER ARRAY COHG3,COHB3[0:3];
00230	INTEGER ARRAY PH,APH,BPH,CPH[0:4];
00240	INTEGER ARRAY DPH,EPH,FPH[0:3,0:3,0:4];
00250	
00440	TABIN(INTOT);
00450	N←INTOT;
00460	
00490	OUTSTR(TB&"SIGNATURE TABLE SUMMARY as of "&DATIME&CRLF&LF);
00500	
00510	OUTSTR("INCNT="&CVS(INCNT[0])&CRLF);
00520	OUTSTR("Output values for input tables"&CRLF);
00530	SETFORMAT(1,0); P←0;
00540	FOR I←10 STEP 74 UNTIL INTOT*74-1 DO BEGIN
00550	  OUTSTR(CVXSTR(INNAM[P])&TB);
00560	  FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00570	    K←(TABLES[I+J] LSH 32) LSH -32;
00580	    IF (J MOD 8)=0 THEN OUTSTR(" ");
00590	    OUTSTR(CVS(K)); END;
00600	  OUTSTR(CRLF); P←P+1; END;
00610	OUTSTR(CRLF);
00620	
00630	OUTSTR(CRLF&"Name"&TB&"TYPE"&TB&"Learn"&TB&"Gate"&TB&"IN1"&
00640	   TB&"IN2"&TB&"IN3"&TB&"IN4"&TB&"IN5"&TB&"IN6"&CRLF&LF);
00650	FOR I←N*74 STEP 74 UNTIL TABSIZ-75 DO BEGIN
00655	IF SKIP=0 THEN SKIP←CVD(INCHRW) ELSE SKIP←SKIP-1;
00660	IF LIST[N]≠0 THEN BEGIN IF LIST[N]≠1 THEN BEGIN "DECODE"
00670	   STRING LEARN;INTEGER K1,K2,K3,K4;
00680	    IF LIST[N+LISSIZ%10]≥CVSIX("Q0") THEN BEGIN
00690	       K←LIST[N+LISSIZ%5]; K1←K LSH -18; K2←(K LSH 18) LSH -30;
00700	       K3←(K LSH 24) LSH -30; K4←(K LSH 30) LSH -30;
00710	       LEARN←CVXSTR(PHLIST[K1])[1 TO 2]&CVXSTR(PHLIST[K2])[1 TO 2]&
00720	             CVXSTR(PHLIST[K3])[1 TO 2]&CVXSTR(PHLIST[K4])[1 TO 2];
00730						  END 
00740	          ELSE LEARN←CVXSTR(LIST[N+LISSIZ%5]);
00750	
00760	  OUTSTR(CVXSTR(LIST[N])&TB&CVXSTR(LIST[N+LISSIZ%10])&
00770	LEARN&TB&CVXSTR(LIST[N+3*LISSIZ%10])&TB&
00780	CVXSTR(LIST[N+4*LISSIZ%10])&TB&
00790	CVXSTR(LIST[N+LISSIZ%2])&TB&CVXSTR(LIST[N+6*LISSIZ%10])&TB&
00800	CVXSTR(LIST[N+7*LISSIZ%10])&TB&CVXSTR(LIST[N+8*LISSIZ%10])&TB&
00810	CVXSTR(LIST[N+9*LISSIZ%10])&CRLF); END "DECODE"; END ELSE DONE;
00820	OUTSTR(CRLF);
00830	
00840	IF LIST[N+LISSIZ%10]<CVSIX("Q0") THEN BEGIN
00850	  L←M←P←Q←O←R←S←V←W←0;
00860	  FOR J←0 STEP 1 UNTIL 63 DO BEGIN
00870	    K←TABLES[I+J+10];
00880	    L←L+((K LSH 16) LSH -20);
00890	    M←M+(K LSH -20);
00900	    O←O+((K LSH 32) LSH -32);
00910	    IF ((K LSH 33) LSH -33)≥4 THEN V←V+1 ELSE W←W+1;
00920	      T←(K LSH 16) LSH -20; U←K LSH -20;
00930	      IF T≥U THEN BEGIN P←P+T; Q←Q+U; END
00940	             ELSE BEGIN R←R+U; S←S+T; END;
00950	  END;
00960	  O←O LSH -6;
00970	  J←(P*100)%(P+S); K←(Q*100)%(P+Q);
00980	SETFORMAT(2,0);
00990	  OUTSTR("   #+ "&CVS(L)&"   #- "&CVS(M)&"   Average output "&
01000	   CVS(O)&"   #≥4 "&   CVS(V)&"   #≤3 "&CVS(W)&CRLF);
01010	  L←(R*100)%(Q+R); M←(S*100)%(R+S);
01020	OUTSTR(CRLF&TB&TB&"Find"&TB&"Tare"&TB&"Find¬"&TB&"Tare¬"&CRLF);
01030	OUTSTR(TB&"Out"&TB&CVS(J)&TB&CVS(K)&TB&CVS(L)&TB&CVS(M)&CRLF);
01040	
01050	K←TABLES[I+1];
01060	INK←(K LSH 6) LSH -30;
01070	
01080		⊂ **** P2 ****;
01090	IF INK=2 THEN BEGIN
01100	
01110	FOR J←0 STEP 1 UNTIL 7 DO COHG1[J]←COHB1[J]←COHG2[J]←COHB2[J]←0;
01120	FOR J←0 STEP 1 UNTIL 7 DO
01130	  FOR K←0 STEP 1 UNTIL 7 DO BEGIN
01140	    L←(J LSH 3)+K+I+10;
01150	    M←TABLES[L]; O←((M LSH 16) LSH -20); P←(M LSH -20);
01160	    COHG1[K]←COHG1[K]+O; COHB1[K]←COHB1[K]+P;
01170	    COHG2[J]←COHG2[J]+O; COHB2[J]←COHB2[J]+P;
01180	  END;
01190	P←Q←R←S←0;
01200	FOR K←0 STEP 1 UNTIL 7 DO 
01210	 IF COHG1[K]≥COHB1[K] THEN BEGIN P←P+COHG1[K];Q←Q+COHB1[K];END
01220	    ELSE BEGIN R←R+COHB1[K]; S←S+COHG1[K]; END;
01230	J←(P*100)%(P+S); K←(Q*100)%(P+Q);
01240	  L←(R*100)%(Q+R); M←(S*100)%(R+S);
01250	OUTSTR(TB&"IN1"&TB&CVS(J)&TB&CVS(K)&TB&CVS(L)&TB&CVS(M)&CRLF);
01260	P←Q←R←S←0;
01270	 FOR J←0 STEP 1 UNTIL 7 DO
01280	  IF COHG2[J]≥COHB2[J] THEN BEGIN P←P+COHG2[J];Q←Q+COHB2[J];END
01290	    ELSE BEGIN R←R+COHB2[J]; S←S+COHG2[J]; END;
01300	J←(P*100)%(P+S); K←(Q*100)%(P+Q);
01310	  L←(R*100)%(Q+R); M←(S*100)%(R+S);
01320	OUTSTR(TB&"IN2"&TB&CVS(J)&TB&CVS(K)&TB&CVS(L)&TB&CVS(M)&CRLF);
01330	
01340	
01350		⊂ **** P3 ****;
01360	END ELSE IF INK=3 THEN BEGIN
01370	
01380	FOR J←0 STEP 1 UNTIL 3 DO 
01390	  COHG1[J]←COHB1[J]←COHG2[J]←COHB2[J]←COHG3[J]←COHB3[J]←0;
01400	FOR J←0 STEP 1 UNTIL 3 DO
01410	  FOR K←0 STEP 1 UNTIL 3 DO FOR L←0 STEP 1 UNTIL 3 DO BEGIN
01420	    M←(J LSH 4)+(K LSH 2)+L+I+10;
01430	    Q←TABLES[M]; O←((Q LSH 16) LSH -20); P←(Q LSH -20);
01440	    COHG1[L]←COHG1[L]+O; COHB1[L]←COHB1[L]+P;
01450	    COHG2[K]←COHG2[K]+O; COHB2[K]←COHB2[K]+P;
01460	    COHG3[J]←COHG3[J]+O; COHB3[J]←COHB3[J]+P;
01470	  END;
01480	P←Q←R←S←T←U←0;
01490	FOR L←0 STEP 1 UNTIL 3 DO 
01500	  IF COHG1[L]≥COHB1[L] THEN BEGIN P←P+COHG1[L];Q←Q+COHB1[L];END
01510	    ELSE BEGIN R←R+COHB1[L]; S←S+COHG1[L]; END;
01520	J←(P*100)%(P+S); K←(Q*100)%(P+Q);
01530	  L←(R*100)%(Q+R); M←(S*100)%(R+S);
01540	OUTSTR(TB&"IN1"&TB&CVS(J)&TB&CVS(K)&TB&CVS(L)&TB&CVS(M)&CRLF);
01550	FOR K←0 STEP 1 UNTIL 3 DO 
01560	  IF COHG2[K]≥COHB2[K] THEN BEGIN P←P+COHG2[K];Q←Q+COHB2[K];END
01570	    ELSE BEGIN R←R+COHB2[K]; S←S+COHG2[K]; END;
01580	J←(P*100)%(P+S); K←(Q*100)%(P+Q);
01590	  L←(R*100)%(Q+R); M←(S*100)%(R+S);
01600	OUTSTR(TB&"IN2"&TB&CVS(J)&TB&CVS(K)&TB&CVS(L)&TB&CVS(M)&CRLF);
01610	 FOR J←0 STEP 1 UNTIL 3 DO
01620	  IF COHG3[J]≥COHB3[J] THEN BEGIN P←P+COHG3[J];Q←Q+COHB3[J];END
01630	    ELSE BEGIN R←R+COHB3[J]; S←S+COHG3[J]; END;
01640	J←(P*100)%(P+S); K←(Q*100)%(P+Q);
01650	  L←(R*100)%(Q+R); M←(S*100)%(R+S);
01660	OUTSTR(TB&"IN3"&TB&CVS(J)&TB&CVS(K)&TB&CVS(L)&TB&CVS(M)&CRLF);
01670	
01680	
01690	END;	⊂ CHANGE TO END ELSE to add 6-input case;
01700	
01710		⊂ **** Q ****;
01720	END ELSE BEGIN	⊂ Start of Q;
01730	IF I>(TABSIZ -149) THEN  DONE;
01740	L←M←P←Q←R←S←T←0;
01750	FOR J←0 STEP 1 UNTIL 63 DO BEGIN
01760	  K←TABLES[I+10+J];
01770	  L←L+((K LSH 2) LSH -20);
01780	  K←TABLES[I+84+J];	⊂ Get second half of Q table;
01790	  M←M+(K LSH - 27);
01800	  P←P+((K LSH 9) LSH -27);
01810	  Q←Q+((K LSH 18) LSH -27);
01820	  R←R+((K LSH 27) LSH -27);
01830	END; SETFORMAT(1,0);
01840	OUTSTR("      Usage-  N.A. "&CVS(L)&"   Ph1 "&CVS(M)&
01850	"   Ph2 "&CVS(P)&      "   Ph3 "&CVS(Q)&"   Ph4 "&CVS(R)&CRLF&LF);
01860	
01870	OUTSTR(TB&"   N.A.");
01880	FOR J←1 STEP 1 UNTIL 4 DO 
01890	OUTSTR(TB&TB&"    PH"&CVS(J)); OUTSTR(CRLF);
01900	FOR J←0 STEP 1 UNTIL 4 DO
01910	 OUTSTR(TB&"Find"&TB&"Tare"); OUTSTR(CRLF&"OUT");
01920	
01930	FOR J←0 STEP 1 UNTIL 4 DO APH[J]←BPH[J]←CPH[J]←0;
01940	FOR J←0 STEP 1 UNTIL 63 DO BEGIN
01950	  K←TABLES[J+I+10]; PH[0]←(K LSH 2) LSH -20;
01960	  K←TABLES[J+I+74]; PH[1]←K LSH -27; PH[2]←(K LSH 9) LSH -27;
01970	           PH[3]←(K LSH 18) LSH -27; PH[4]←(K LSH 27) LSH -27;
01980	  X←0; FOR L←0 STEP 1 UNTIL 4 DO
01990	   IF PH[L]>X THEN BEGIN X←PH[L]; K←L; END;
02000	  FOR L←0 STEP 1 UNTIL 4 DO BEGIN
02010	    IF L=K THEN APH[L]←APH[L]+ PH[L] ELSE  BPH[K]←BPH[K]+ PH[L];
02020	    CPH[L]←CPH[L]+ PH[L]; END; END;
02030	FOR J←0 STEP 1 UNTIL 4 DO BEGIN
02040	  K←(APH[J]*100)%CPH[J];   L←(BPH[J]*100)%(APH[J]+BPH[J]); 
02050	 OUTSTR(TB&CVS(K)&TB&CVS(L)); END; OUTSTR(CRLF);
02060	
02070	K←TABLES[I+1];
02080	K←(K LSH 6) LSH -30;
02090	
02100		⊂ **** Q2 ****;
02110	IF INK=2 THEN BEGIN
02120	
02130	  OUTSTR(CRLF);
02140	
02150		⊂ **** Q3 ****;
02160	END ELSE IF INK=3 THEN BEGIN
02170	
02180	FOR J←0 STEP 1 UNTIL 3 DO FOR K←0 STEP 1 UNTIL 3 DO 
02190	 FOR L←0 STEP 1 UNTIL 4 DO DPH[J,K,L]←EPH[J,K,L]←FPH[J,K,L]←0;
02200	
02210	⊂	**** Get PH values;
02220	FOR J←0 STEP 1 UNTIL 3 DO
02230	 FOR K←0 STEP 1 UNTIL 3 DO
02240	  FOR L←0 STEP 1 UNTIL 3 DO BEGIN
02250	   R←(J LSH 4)+(K LSH 2)+L+I+10;
02260	   M←TABLES[R]; PH[0]←(M LSH 2) LSH -20;
02270	   M←TABLES[R+74]; PH[1]←M LSH -27; PH[2]←(M LSH 9) LSH -27;
02280	               PH[3]←(M LSH 18) LSH -27; PH[4]←(M LSH 27) LSH -27;
02290	   FOR P←0 STEP 1 UNTIL 4 DO BEGIN
02300	    DPH[K,L,P]←DPH[K,L,P]+PH[P]; ⊂ ex J corresponds to exIN3;
02310	    EPH[L,J,P]←EPH[L,J,P]+PH[P]; ⊂ ex K corresponds to exIN2;
02320	    FPH[J,K,P]←FPH[J,K,P]+PH[P]; END; END;
02330	
02340	OUTSTR("ex1");	⊂ Now treat exIN1 data alone;
02350	        
02360	FOR L←0 STEP 1 UNTIL 4 DO APH[L]←BPH[L]←CPH[L]←0;
02370	FOR J←0 STEP 1 UNTIL 3 DO 
02380	 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
02390	X←0; FOR L←0 STEP 1 UNTIL 4 DO
02400	 IF FPH[J,K,L]>X THEN BEGIN X←FPH[J,K,L]; O←L; END;
02410	FOR L←0 STEP 1 UNTIL 4 DO BEGIN 
02420	 IF L=O THEN APH[L]←APH[L]+FPH[J,K,L] ELSE
02430	  BPH[O]←BPH[O]+FPH[J,K,L];
02440	CPH[L]←CPH[L]+FPH[J,K,L]; END; END;
02450	FOR J←0 STEP 1 UNTIL 4 DO BEGIN
02460	  K←(APH[J]*100)%CPH[J];   L←(BPH[J]*100)%(APH[J]+BPH[J]); 
02470	 OUTSTR(TB&CVS(K)&TB&CVS(L)); END; OUTSTR(CRLF);
02480	
02490	OUTSTR("ex2");
02500	        
02510	FOR L←0 STEP 1 UNTIL 4 DO APH[L]←BPH[L]←CPH[L]←0;
02520	FOR J←0 STEP 1 UNTIL 3 DO 
02530	 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
02540	X←0; FOR L←0 STEP 1 UNTIL 4 DO
02550	  IF EPH[J,K,L]>X THEN BEGIN X←EPH[J,K,L]; O←L; END;
02560	FOR L←0 STEP 1 UNTIL 4 DO BEGIN 
02570	 IF L=O THEN APH[L]←APH[L]+FPH[J,K,L] ELSE
02580	   BPH[O]←BPH[O]+FPH[J,K,L];
02590	CPH[L]←CPH[L]+FPH[J,K,L]; END; END;
02600	FOR J←0 STEP 1 UNTIL 4 DO BEGIN
02610	  K←(APH[J]*100)%CPH[J];   L←(BPH[J]*100)%(APH[J]+BPH[J]); 
02620	 OUTSTR(TB&CVS(K)&TB&CVS(L)); END; OUTSTR(CRLF);
02630	
02640	OUTSTR("ex3");
02650	        
02660	FOR L←0 STEP 1 UNTIL 4 DO APH[L]←BPH[L]←CPH[L]←0;
02670	FOR J←0 STEP 1 UNTIL 3 DO 
02680	 FOR K←0 STEP 1 UNTIL 3 DO BEGIN
02690	X←0; FOR L←0 STEP 1 UNTIL 4 DO
02700	  IF DPH[J,K,L]>X THEN BEGIN X←DPH[J,K,L]; O←L; END;
02710	FOR L←0 STEP 1 UNTIL 4 DO BEGIN 
02720	 IF L=O THEN APH[L]←APH[L]+FPH[J,K,L] ELSE
02730	   BPH[O]←BPH[O]+FPH[J,K,L];
02740	CPH[L]←CPH[L]+FPH[J,K,L]; END; END;
02750	FOR J←0 STEP 1 UNTIL 4 DO BEGIN
02760	  K←(APH[J]*100)%CPH[J];   L←(BPH[J]*100)%(APH[J]+BPH[J]); 
02770	 OUTSTR(TB&CVS(K)&TB&CVS(L)); END; OUTSTR(CRLF);
02780	
02790	
02800		⊂ **** Q6 ****;
02810	END ELSE IF INK=6 THEN BEGIN
02820	
02830	OUTSTR(TB&"TOTAL USAGE"&CRLF);
02840	OUTSTR(
02850	"IN6↓     IN3→              0                             1"&CRLF&
02860	"  IN5↓   IN2→      0             1               0             1"
02870	&CRLF&
02880	"    IN4↓ IN1→   0     1       0     1         0     1       0     1"
02890	&CRLF&LF);
02900	FOR J←0 STEP 1 UNTIL 1 DO BEGIN
02910	 FOR K←0 STEP 1 UNTIL 1 DO BEGIN
02920	  FOR L←0 STEP 1 UNTIL 1 DO BEGIN
02930	   W←I+10+(J LSH 5)+(K LSH 4)+(L LSH 3);
02940	SETFORMAT(2,0); OUTSTR("  ");
02950	IF L=0 THEN BEGIN
02960	 IF K=0 THEN OUTSTR(CVS(J)) ELSE OUTSTR("  ");
02970	 OUTSTR(CVS(K)); END   ELSE OUTSTR("    ");
02980	OUTSTR(CVS(L)&"    ");
02990	SETFORMAT(5,0);
03000	   FOR M←0 STEP 1 UNTIL 1 DO BEGIN
03010	    FOR O←0 STEP 1 UNTIL 1 DO BEGIN
03020	     FOR P←0 STEP 1 UNTIL 1 DO BEGIN
03030	      X←W+(M LSH 2)+(O LSH 1)+P;
03040	      Q←TABLES[X];
03050	      R←((Q LSH 2) LSH -20);
03060	      Q←TABLES[X+74];
03070	      R←R+(Q LSH -27)+((Q LSH 9) LSH -27)+((Q LSH 18) LSH -27)+
03080	      ((Q LSH 27) LSH -27);
03090	      IF R=0 THEN OUTSTR("      ") ELSE OUTSTR(CVS(R)&" ");
03100	     END;
03110	OUTSTR("  ");
03120	    END;
03130	OUTSTR("  ");
03140	   END;
03150	OUTSTR(CRLF); 
03160	IF L≠0 THEN OUTSTR(LF);
03170	  END;
03180	 END;
03190	END;
03200	OUTSTR(TB&"OUTPUT VALUES"&CRLF);
03210	OUTSTR(
03220	  "IN6↓     IN3→              0                             1"&CRLF&
03230	"  IN5↓   IN2→      0             1               0             1"
03240	&CRLF&
03250	"    IN4↓ IN1→   0     1       0     1         0     1       0     1"
03260	&CRLF&LF);
03270	SETFORMAT(1,0);
03280	
03290	FOR J←0 STEP 1 UNTIL 1 DO BEGIN
03300	 FOR K←0 STEP 1 UNTIL 1 DO BEGIN
03310	  FOR L←0 STEP 1 UNTIL 1 DO BEGIN
03320	   W←I+10+(J LSH 5)+(K LSH 4)+(L LSH 3);
03330	SETFORMAT(2,0); OUTSTR("  ");
03340	IF L=0 THEN BEGIN
03350	 IF K=0 THEN OUTSTR(CVS(J)) ELSE OUTSTR("  ");
03360	 OUTSTR(CVS(K)); END   ELSE OUTSTR("    ");
03370	OUTSTR(CVS(L)&"      ");
03380	SETFORMAT(1,0);
03390	   FOR M←0 STEP 1 UNTIL 1 DO BEGIN
03400	    FOR O←0 STEP 1 UNTIL 1 DO BEGIN
03410	     FOR P←0 STEP 1 UNTIL 1 DO BEGIN
03420	      X←W+(M LSH 2)+(O LSH 1)+P;
03430	      Q←TABLES[X];
03440	      R←(Q LSH 18) LSH -33;
03450	      S←(Q LSH 21) LSH -33;
03460	      T←(Q LSH 24) LSH -33;
03470	      U←(Q LSH 27) LSH -33;
03480	      V←(Q LSH 30) LSH -33;
03490	OUTSTR(CVS(R)&CVS(S)&CVS(T)&CVS(U)&CVS(V)&" ");
03500	     END;
03510	OUTSTR("  ");
03520	    END;
03530	OUTSTR("  ");
03540	   END;
03550	OUTSTR(CRLF); 
03560	IF L≠0 THEN OUTSTR(LF);
03570	  END;
03580	 END;
03590	END;
03600	END;	⊂ End of INK=6;
03610	I←I+74; N←N+1;
03620	END;	⊂ End of Q;
03630	OUTSTR(CRLF);
03640	IF I>TABSIZ -75 THEN DONE;
03650	N←N+1; IF LIST[N]=0 THEN DONE; END;
03700	
03710	END "SEE";